# Copyright (c) 2009, Renato Cunha 
# All rights reserved. 
# 
# Redistribution and use in source and binary forms, with or without 
# modification, are permitted provided that the following conditions are 
# met: 
# 
#  * Redistributions of source code must retain the above copyright notice, 
#    this list of conditions and the following disclaimer. 
#  * Redistributions in binary form must reproduce the above copyright 
#    notice, this list of conditions and the following disclaimer in the 
#    documentation and/or other materials provided with the distribution. 
#  * Neither the name of  nor the names of its contributors may be used to 
#    endorse or promote products derived from this software without 
#    specific prior written permission. 
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

import os

def CheckOpenGL(env, conf):
	# Mac OS X: -framework OpenGL
	# Linux: -lGL
	# win32 (msys) -lopengl32
	if env['PLATFORM'] is 'win32':
		if not conf.CheckLibWithHeader('opengl32', 'GL/gl.h', 'c'):
			print "Unable to find OpenGL libraries. Exiting."
			Exit(1)
	elif env['PLATFORM'] is 'darwin':
		env.Append(FRAMEWORKS = ['OpenGL'])
		if not conf.CheckCHeader('OpenGL/OpenGL.h'):
			print "Unable to find OpenGL headers. Exiting."
			Exit(1)
	else:
		if not conf.CheckLibWithHeader('GL', 'GL/gl.h', 'c'):
			print "Unable to find OpenGL libraries. Exiting."
			Exit(1)
	return 0

def CheckGLUT(env, conf):
	# Mac OS X: -framework glut
	# rest: -lglut
	if env['PLATFORM'] is 'darwin':
		env.Append(FRAMEWORKS = ['GLUT'])
		if not conf.CheckCHeader('GLUT/glut.h'):
			print "Unable to find GLUT headers. Exiting."
			Exit(1)
	else:
		if not conf.CheckLibWithHeader('glut', 'GL/glut.h', 'c'):
			if env['PLATFORM'] is 'win32':
				# Try freeglut as a fallback
				if conf.CheckLibWithHeader('freeglut', 'GL/glut.h', 'c'):
					return 0
			print "Unable to find OpenGL libraries. Exiting."
			Exit(1)
	return 0

env = Environment(ENV = os.environ)

include_paths = {'CPPPATH' : [
	'.',
	'include',
]}

env.MergeFlags(include_paths)

conf = Configure(env)

CheckOpenGL(env, conf)
env.ParseConfig('sdl-config --cflags')
env.ParseConfig('sdl-config --libs')

env = conf.Finish()

SConscript('src/SConscript', variant_dir = 'build', exports = 'env', duplicate = 0 )

